﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace studentskicentarETFa
{
    partial class DAL
    {
        public class ZaposlenikDAO: IDaoCrud<Zaposlenik>
        {
            

            public long create(Zaposlenik entitet)
            {
                try
                {
                    MySqlCommand komanda = new MySqlCommand();
                    komanda.CommandText = "insert into Zaposlenik values (@ID_Clana, @ID_Kartice,@Ime,@Prezime,@BrojTelefona,@KoeficijentPlate,@RadnoVrijeme,@Pozicija )";
                    komanda.Parameters.AddWithValue("@ID_Clana", entitet.ID_Clana1);
                    komanda.Parameters.AddWithValue("@ID_Kartice", entitet.ID_Kartice1);
                    komanda.Parameters.AddWithValue("@Ime", entitet.Ime);
                    komanda.Parameters.AddWithValue("@Prezime", entitet.Prezime);
                    komanda.Parameters.AddWithValue("@BrojTelefona", entitet.BrojTelefona);
                   // komanda.Parameters.AddWithValue("@DatumZaposlenja", entitet.DatumZaposlenja); 
                    komanda.Parameters.AddWithValue("@KoeficijentPlate", entitet.KoeficijentPlate);      
                    komanda.Parameters.AddWithValue("@RadnoVrijeme", entitet.RadnoVrijeme);                   
                    komanda.Parameters.AddWithValue("@Pozicija", entitet.Pozicija);
                    komanda.Connection = con;
                    komanda.Prepare();
                    komanda.ExecuteNonQuery();
                    con.Close();
                    return 1;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Zaposlenik read(Zaposlenik entitet)
            {
                try
                {
                    MySqlCommand komanda = new MySqlCommand(); 
                    komanda = new MySqlCommand("select * from Zaposleni where id_clana = '" + entitet.ID_Clana1.ToString() + "';", con);
                    MySqlDataReader citac = komanda.ExecuteReader();
                   Zaposlenik zaposlenik = null;
                    while (citac.Read())
                    {
                        //if (entitet.Ime == citac.GetString("ime") && entitet.Prezime == citac.GetString("prezime"))
                        zaposlenik = new Zaposlenik(citac.GetString("Ime"), citac.GetString("Prezime"));
                        return zaposlenik;
                    }
                    return zaposlenik;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Zaposlenik update(Zaposlenik entitet)
            {
                try
                {
                    MySqlCommand komanda = new MySqlCommand(); 
                    komanda.CommandText = "update Zaposlenik set ID_Clana=@ID_Clana1, ID_Kartice=@ID_Kartice1,Ime=@Ime,Prezime=@Prezime,BrojTelefona=@BrojTelefona,KoeficijentPlate=@KoeficijentPlate,RadnoVrijeme=@RadnoVrijeme,Pozicija=@Pozicija ";
                    komanda.Parameters.AddWithValue("@ID_Clana", entitet.ID_Clana1);
                    komanda.Parameters.AddWithValue("@ID_Kartice", entitet.ID_Kartice1);
                    komanda.Parameters.AddWithValue("@Ime", entitet.Ime);
                    komanda.Parameters.AddWithValue("@Prezime", entitet.Prezime);
                    komanda.Parameters.AddWithValue("@BrojTelefon", entitet.BrojTelefona);
                    //komanda.Parameters.AddWithValue("@DatumZaposlenja", entitet.DatumZaposlenja.ToShortDateString());
                    komanda.Parameters.AddWithValue("@KoeficijentPlate", entitet.KoeficijentPlate);                  
                    komanda.Parameters.AddWithValue("@RadnoVrijeme", entitet.RadnoVrijeme);
                    komanda.Parameters.AddWithValue("@Pozicija", entitet.Pozicija);
                    komanda.Connection = con;
                    komanda.Prepare();
                    komanda.ExecuteNonQuery();
                    con.Close();
                    return read(entitet);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            

            public void delete(Zaposlenik entitet)
            {
                try
                {
                    MySqlCommand komanda = new MySqlCommand(); 
                    komanda = new MySqlCommand("delete from Zaposlenik where ID_Clana = " + entitet.ID_Clana1 + ";", con);
                    komanda.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }


            }

            public List<Zaposlenik> getByExample(string name, string value)
            {
                try
                {
                    MySqlCommand n = new MySqlCommand("select *from Zaposlenik where '" + value + "'='" + name + "'", con);
                    List<Zaposlenik> _zaposlenici = new List<Zaposlenik>();
                    MySqlDataReader r = n.ExecuteReader();
                    while (r.Read())
                    {
                        _zaposlenici.Add(new Zaposlenik(r.GetString("ID_Clana"),
                            r.GetString("Ime"),
                            r.GetString("Prezime"),
                            r.GetString("BrojTelefona")
                           ));
                    }
                    r.Close();
                    return _zaposlenici;
                }

                catch (Exception)
                {
                    throw;
                }
            }

            public List<Zaposlenik> getByExample2(string name)
            {
                try
                {
                    MySqlCommand n = new MySqlCommand("select *from Zaposlenik where Pozicija=@Pozicija", con);
                    n.Parameters.AddWithValue("@Pozicija", name);
                    List<Zaposlenik> _zaposlenici = new List<Zaposlenik>();
                    MySqlDataReader r = n.ExecuteReader();
                    while (r.Read())
                    {
                        _zaposlenici.Add(new Zaposlenik(r.GetString("ID_Clana"),
                            r.GetString("ID_Kartice"),
                            r.GetString("Ime"),
                            r.GetString("Prezime"),
                            r.GetString("BrojTelefona"),
                            // r.GetDateTime("DatumZaposlenja"),
                            r.GetDouble("KoeficijentPlate"),
                            r.GetDouble("RadnoVrijeme"),
                            r.GetString("Pozicija")));
                    }
                    r.Close();
                    return _zaposlenici;
                }

                catch (Exception)
                {
                    throw;
                }
            }
            /*public List<Zaposlenik> getAll()
            {
                try
                {
                    MySqlCommand komanda = new MySqlCommand(); 
                    komanda = new MySqlCommand("select * from Zaposlenik", con);
                    MySqlDataReader r = komanda.ExecuteReader();
                    List<Zaposlenik> _zaposlenici = new List<Zaposlenik>();
                    while (r.Read())
                        _zaposlenici.Add(new Zaposlenik(r.GetString("ID_Clana"), r.GetString("ID_Kartice"), r.GetString("Ime"), r.GetString("Prezime"), r.GetString("BrojTelefona"), r.GetDateTime("DatumZaposlenja"), r.GetString("VelicinaPlate"), r.GetString("KoeficijentPlate"), r.GetDateTime("VrijemeDolaska"), r.GetDateTime("VrijemeOdlaska"), r.GetDouble("RadnoVrijeme"), r.GetString("Username"), r.GetString("Password"), r.GetString("Pozicija")));
                    con.Close();
                    return _zaposlenici;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }*/
            public List<Zaposlenik> getAll()
            {
                try
                {
                    MySqlCommand komanda = new MySqlCommand();
                    komanda = new MySqlCommand("select * from Zaposlenik", con);
                    MySqlDataReader r = komanda.ExecuteReader();
                    List<Zaposlenik> _zaposlenici = new List<Zaposlenik>();
                    
                    while (r.Read())
                    {
                        Zaposlenik z = new Zaposlenik(r.GetString("ID_Clana"),
                            r.GetString("ID_Kartice"),
                            r.GetString("Ime"),
                            r.GetString("Prezime"),
                            r.GetString("BrojTelefona"),
                           // r.GetDateTime("DatumZaposlenja"),
                            r.GetDouble("KoeficijentPlate"),
                            r.GetDouble("RadnoVrijeme"),
                            r.GetString("Pozicija"));

                        _zaposlenici.Add(z);
                    }
                    //con.Close();
                    r.Close();
                    return _zaposlenici;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Zaposlenik getById(int id)
            {

                try
                {
                    MySqlCommand m = new MySqlCommand("select *from Zaposlenik where ID_Clana=" + id+ "", con);
                    MySqlDataReader r = m.ExecuteReader();
                    Zaposlenik z = null;
                    while (r.Read())
                    {
                        z = new Zaposlenik(r.GetString("Ime"), r.GetString("Prezime"));
                        return z;
                    }
                    return z;
                }
                catch (Exception)
                {
                    throw;
                }


            }

           
        }

    }
}
